<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Producto_frm( $this );

	class Producto_frm extends Frm
	{
	function Producto_frm( &$oModule )
		{
			$this->Frm( $oModule );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncProducto']				= new Input( "Codigo", "ncProducto", '', false, true );
			$this->aFields['cdProducto']				= new InputText( "Nombre", "cdProducto" );
			$this->aFields['nVersion']					= new InputNumber( "Version", "nVersion" );
			$this->aFields['nqReposicion']				= new InputNumber( "Reposicion", "nqReposicion" );
			$this->aFields['cPalabrasClave']			= new InputText ( "Palabras clave", "cPalabrasClave" );
			$this->aFields['ncTipoProducto']			= new InputList ( "Tipo", "ncTipoProducto" );
			$this->aFields['nAlto']							= new InputNumber( "Alto", "nAlto" );
			$this->aFields['nAncho']						= new InputNumber( "Ancho","nAncho" );
			$this->aFields['nLargo']						= new InputNumber( "Largo", "nLargo" );
			$this->aFields['nPeso']						= new InputNumber( "Peso","nPeso" );
			$this->aFields['aIdiomas']					= new InputCheck( "Idiomas", "aIdiomas" );
			$this->aFields['ncIdioma']					= new InputList( "Idioma", "ncIdioma" );
			$this->aFields['cImagen']						= new InputPhoto( "Foto","cImagen" , '', 100, 100,  "files/folleteria");
		}

	function setValue( $ncProducto )
		{
			$cSql = "SELECT cdProducto, nVersion, nqReposicion, cPalabrasClave, cImagen, nLargo, nAlto, nAncho, nPeso, ncTipoProducto
								FROM gtProducto as Pro
								WHERE Pro.ncProducto = $ncProducto";
			$aRow = $this->oDatabase->getArray($cSql);
			$this->setFieldsArray ( $aRow );
			return $aRow;
		}
	function initializeForm()
		{
			// Si Recibe la Pk => busca los datos
				if ( $this->isRetrievable() && $this->aFields['ncProducto']->getValue() )
				{
					$aRow = $this->setValue( $this->aFields['ncProducto']->getValue() );
				}
			// Configura el Titulo
				$this->setLabel ( "Producto");
			return true;
		}
	function initializeField( $cField , &$oField )
		{
			switch ( $cField )
			{
				case 'ncTipoProducto':
					$cSql= "SELECT ncTipoProducto, cdTipoProducto FROM gcTipoProducto";
					$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
					break;
				case 'nAlto':
				case 'nAncho':
				case 'nLargo':
				case 'nPeso':
					$oField->setLength( 5.1 );
					break;
				case 'cdProducto':
					$oField->setMandatory( $this->isMandatory() );
					$oField->setLength( 100 );
				break;
				case 'cPalabrasClave':
					$oField->setLength( 250 );
				break;
				case 'aIdiomas':
					if ( $this->aFields['ncProducto']->getValue() )
					{
						$cSql = "SELECT Idi.ncIdioma, Idi.cdIdioma, PId.ncProducto
											FROM acIdioma as Idi
												LEFT JOIN gtProductoIdioma as PId
													ON PId.ncIdioma = Idi.ncIdioma
													AND PId.ncProducto = " . $this->aFields['ncProducto']->getValue() . "
											WHERE Idi.ncIdioma IN (3,5, 25, 116, 117, 32, 37, 48, 51, 52, 84, 95, 89, 36)
											ORDER BY Idi.cdIdioma";
					} else
					{
						$cSql = "SELECT ncIdioma, cdIdioma
											FROM acIdioma as Idi
											WHERE ncIdioma IN (3,5, 25, 116, 117, 32, 37, 48, 51, 52, 84, 95, 89, 36)
											ORDER BY Idi.cdIdioma";
					}
					$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
					$oField->setMultiple( true );
				break;
				case 'ncIdioma':
					$cSql = "SELECT ncIdioma, cdIdioma
										FROM acIdioma
										WHERE ncIdioma IN (3,5, 25, 116, 117, 32, 37, 48, 51, 52, 84, 95, 89, 36)";
					$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
				break;
				case 'cImagen':
					$oField->setForm( $this );
				break;
			}
		}
	}
?>
